package com.ruoyi.member.service.impl;

import java.util.List;
import java.util.Map;

import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.db.domain.BaseTypeInfo;
import com.ruoyi.db.mapper.BaseTypeInfoMapper;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.member.service.IBaseTypeInfoService;
import com.ruoyi.common.core.text.Convert;

/**
 * 用户列表Service业务层处理
 * 
 * @author ruoyi
 * @date 2022-08-02
 */
@Service
@DataSource(DataSourceType.SLAVE)
public class BaseTypeInfoServiceImpl implements IBaseTypeInfoService 
{
    @Autowired
    private BaseTypeInfoMapper baseTypeInfoMapper;

    /**
     * 查询用户列表
     * 
     * @param id 用户列表主键
     * @return 用户列表
     */
    @Override
    public BaseTypeInfo selectBaseTypeInfoById(Long id)
    {
        return baseTypeInfoMapper.selectBaseTypeInfoById(id);
    }

    /**
     * 查询用户列表列表
     * 
     * @param baseTypeInfo 用户列表
     * @return 用户列表
     */
    @Override
    public List<BaseTypeInfo> selectBaseTypeInfoList(BaseTypeInfo baseTypeInfo)
    {
        return baseTypeInfoMapper.selectBaseTypeInfoList(baseTypeInfo);
    }

    /**
     * 查询用户列表列表
     *
     * @param baseTypeInfo 用户列表
     * @return 用户列表
     */
    @Override
    public List<Map<String, Object>> selectBaseTypeInfoListMap(BaseTypeInfo baseTypeInfo)
    {
        return baseTypeInfoMapper.selectBaseTypeInfoListMap(baseTypeInfo);
    }

    /**
     * 新增用户列表
     * 
     * @param baseTypeInfo 用户列表
     * @return 结果
     */
    @Override
    public int insertBaseTypeInfo(BaseTypeInfo baseTypeInfo)
    {
        baseTypeInfo.setCreateTime(DateUtils.getNowDate());

        return baseTypeInfoMapper.insertBaseTypeInfo(baseTypeInfo);
    }

    /**
     * 修改用户列表
     * 
     * @param baseTypeInfo 用户列表
     * @return 结果
     */
    @Override
    public int updateBaseTypeInfo(BaseTypeInfo baseTypeInfo)
    {
        return baseTypeInfoMapper.updateBaseTypeInfo(baseTypeInfo);
    }

    /**
     * 批量删除用户列表
     * 
     * @param ids 需要删除的用户列表主键
     * @return 结果
     */
    @Override
    public int deleteBaseTypeInfoByIds(String ids)
    {
        return baseTypeInfoMapper.deleteBaseTypeInfoByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除用户列表信息
     * 
     * @param id 用户列表主键
     * @return 结果
     */
    @Override
    public int deleteBaseTypeInfoById(Long id)
    {
        return baseTypeInfoMapper.deleteBaseTypeInfoById(id);
    }

    @Override
    public boolean changeStatus(BaseTypeInfo baseTypeInfo) {

        BaseTypeInfo entry = this.selectBaseTypeInfoById(baseTypeInfo.getId());
        if (ObjectUtils.isEmpty(entry)){
            return false;
        }

        if (!ObjectUtils.notEqual(baseTypeInfo.getStatus(), entry.getStatus())){
            return false;
        }

        int i = this.updateBaseTypeInfo(baseTypeInfo);
        return i > 0;
    }

    @Override
    public List<Map<String, Object>> selectItemListMap(Long id) {
        return baseTypeInfoMapper.selectItemListMap(id);
    }
}
